class Twitter {
    constructor() {
        this.NewsFeed = [];
        // this.UsersFeed = new Map();
        this.UsersFollow = new Map();
        this.time = new Map();
    }
    postTweet(userId, tweetId) {
        // if (!this.UsersFeed.get(userId)) {
        //     this.UsersFeed.set(userId, [tweetId]);
        // } else {
        //     const NewsFeedList = this.UsersFeed.get(userId);
        //     NewsFeedList.unshift(tweetId);
        // }
        // this.time.set(tweetId, Date.now());
        this.NewsFeed.unshift({ userId: userId, tweetId: tweetId });
    }
    getNewsFeed(userId) {
        // let list1 = this.UsersFeed.get(userId);
        const followList = this.UsersFollow.get(userId) || [];
        // const list2 = []
        // followList.map(item => {
        //     list2 = list2.concat(this.UsersFeed.get(item));
        // })
        // list1 = list1.concat(list2);
        // list1.map(item => {
        // })
        followList.unshift(userId);
        const list = [];
        this.NewsFeed.map(item => {
            if (followList.indexOf(item.userId) !== -1 && list.length < 10) {
                list.push(item.tweetId);
            }
        })
        return list;

    }
    follow(followerId, followeeId) {
        if (followeeId === followerId) return
        if (!this.UsersFollow.get(followerId)) {
            this.UsersFollow.set(followerId, [followeeId]);
        } else {
            const followList = this.UsersFollow.get(followerId)
            followList.push(followeeId);
        }
    }
    unfollow(followerId, followeeId) {
        const list = this.UsersFollow.get(followerId);
        if (list) {
            const index = list.indexOf(followeeId);
            if (index !== -1) list.splice(index, 1);
        }
    }
}
const twitter = new Twitter();
// twitter.postTweet(1, 5); // 用户 1 发送了一条新推文 (用户 id = 1, 推文 id = 5)
// console.log(twitter.NewsFeed);

// console.log(twitter.getNewsFeed(1)); // 用户 1 的获取推文应当返回一个列表，其中包含一个 id 为 5 的推文
twitter.follow(1, 2)
console.log(twitter.UsersFollow.get(1));
